package com.itita.ww2.enums;

public enum PushCode {
	/*
	 * Common code
	 */
	UNKNOWN(0), // 未知
	RES, // 用户资源
	FATIGUE, // 疲劳
	LEVEL_EXP, // 等级经验
	GUIDESTEP, // 引导步骤
	ARMY, // 兵
	INVENTORY, // 背包

	/*
	 * User
	 */
	UNLOCK(100), // 解锁
	/*
	 *  Alliance
	 */
	AL_EVT(200), // 联盟消息事件,标识位
	AL_EVT_UPDATE_INFO, // 信息更新
	AL_EVT_UPDATE_MEMBER_COUNT, // 成员数量变更
	AL_EVT_DISBAND, // 联盟解散了
	// AL_EVT_APPOINTED, // 任命
	AL_EVT_UPGRADE, // 升级
	AL_EVT_TRANSFER, // 转让

	/*
	 * Alliance Common
	 */
	ALLIANCE_DISBAND_REQUEST(300), // 发起解散联盟通知
	ALLIANCE_DISBAND_SUCCESS, // 联盟解散成功
	ALLIANCE_DISBAND_CANCEL, // 取消解散联盟
	ALLIANCE_JOIN, // 玩家加入联盟
	ALLIANCE_ROLE_CHANGED, // 玩家官职变更
	ALLIANCE_TRANSFER, // 转让
	ALLIANCE_CONTRIBUTION_CHANGED, // 玩家对联盟贡献度变化
	ALLIANCE_KICK, // 被T了
	ALLIANCE_REJECT_JOIN, // 被拒绝
	ALLIANCE_UPGRADE, // 联盟升级了

	/*
	 * WorldMap
	 */
	WORLDMAP_BASE_DATA_UPDATE(400), // 有据点数据更新
	WORLDMAP_CITY_DATA_UPDATE, // 有城池状态数据刷新
	WORLDMAP_ALLBASE_REFRESH, // 所有据点数据刷新(由服务器回传数据)
	WORLDMAP_ALLCITY_REFRESH, // 所有城池数据刷新(由服务器回传数据)
	// WORLDMAP_CITY_OCCUPIED, // 有城池被占领
	WORLDMAP_CITY_OCCUPY_SUCCESS, // 玩家所在联盟占领成功某城池
	//	WORLDMAP_CITY_DEFEND_SUCCESS, // 玩家所在联盟防守某城池成功
	WORLDMAP_CITY_UNDER_ATTACKING, // 城池正在被攻击
	WORLDMAP_CITY_ATTACKING, // 正在攻击城池
	WORLDMAP_CITY_DECLAR_WAR, // 联盟宣战某城池
	WORLDMAP_CITY_DECLARED, // 联盟城池被宣战
	WORLDMAP_BASE_UP, // 据点升级成功
	WORLDMAP_BASE_EN, // 据点强化成功
	WORLDMAP_KICK_BATTLE, // 将玩家从据点战斗中踢出

	/*
	 * Game & Base
	 */
	GAME_BUILDING_UPGRADE_COMPLETE(500), // 固定建筑升级完成
	GAME_UNIT_PRODUCE_COMPLETE, // 兵兵生产完毕
	;

	private int value;

	private PushCode() {
		this(Counter.nextValue);
	}

	private PushCode(int value) {
		this.value = value++;
		Counter.nextValue = value;
	}

	public int getValue() {
		return value;
	}

	public static PushCode valueOf(int value) {
		for (PushCode item : values()) {
			if (item.getValue() == value) {
				return item;
			}
		}
		return UNKNOWN;
	}

	private static class Counter {
		private static int nextValue = 0;
	}
}
